package com.kinghood.productcenter.service.base;

import com.kinghood.productcenter.common.model.dao.base.BaseBrandDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kinghood.infrastructure.model.dto.SortReqDTO;
import com.kinghood.infrastructure.model.dto.StatusReqDTO;
import com.kinghood.productcenter.common.model.dto.base.BrandReqDTO;
import com.kinghood.productcenter.common.model.dto.base.ListBrandQueryDTO;
import com.kinghood.productcenter.common.model.vo.base.BrandSelectVO;
import com.kinghood.productcenter.common.model.vo.base.BrandVO;
import com.kinghood.sharding.model.PageResponseVO;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * <p>
 * 基础选项-品牌 服务类
 * </p>
 *
 * @author KingHood
 * @since 2023-12-20
 */
public interface IBaseBrandService extends IService<BaseBrandDO> {

    /**
     * 品牌列表
     *
     * @param param 参数
     * @author jp
     * @date 2023/12/21
     */
    PageResponseVO listBrand(ListBrandQueryDTO param);

    /**
     * 新增更新
     *
     * @param dirReq dir红色
     * @author jp
     * @date 2023/12/21
     */
    void addorUpdateBrand(BrandReqDTO dirReq);

    /**
     * 删除
     *
     * @param id id
     * @author jp
     * @date 2023/12/21
     */
    void delBrandById(Long id);

    /**
     * 根据ID查询详情
     *
     * @param id id
     * @author jp
     * @date 2023/12/21
     */
    BrandVO detailBrand(Long id);

    /**
     * 更新品牌状态
     *
     * @param param 参数
     * @author jp
     * @date 2023/12/21
     */
    void updateBrandStatus(StatusReqDTO param);

    /**
     * 更新品牌排序
     *
     * @param param 参数
     * @author jp
     * @date 2023/12/21
     */
    void updateBrandSort(SortReqDTO param);

    /**
     * 获取所有品牌
     *
     * @author jp
     * @date 2024/01/04
     */
    List<BrandSelectVO> getAllBrand();

    /**
     * 下载品牌
     *
     * @param param    参数
     * @param response 回答
     * @author jp
     * @date 2024/01/04
     */
    void downloadBrand(ListBrandQueryDTO param, HttpServletResponse response);
}
